package com.cskaoyan.controller;

import com.cskaoyan.anno.LogRecord;
import com.cskaoyan.bean.vo.BaseRespVo;
import com.cskaoyan.bean.data.PageData;
import com.cskaoyan.bean.vo.GoodsCreateVo;
import com.cskaoyan.service.GoodsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 1、key=value形式的请求参数 → 查询请求
 * 2、JSON字符               → 增删改请求
 * 3、文件上传               → multipart请求 /admin/storage/create
 */
@RestController
@RequestMapping("admin/goods")
public class AdminGoodsController {

    @Autowired
    GoodsService goodsService;


    // key=value形式的请求参数

    /**
     * key=value形式的请求参数，可以在Handler方法的形参中直接接收
     * SpringMVC帮你做了request.getParameter，SpringMVC内部提供了很多的Converter（类型转换器）
     * 可以使用的类型：
     *    String
     *    基本类型以及对应的包装类型：比如page这个参数，SpringMVC先通过request.getParameter("page")获得String，然后将String转换为int类型的值
     *    Date：默认的pattern=yyyy/MM/dd,如果想要自己指定pattern，可以使用注解@DateTimeFormat,其中pattern属性指定格式
     *    以及上面类型对应的数组
     */
    @RequestMapping("list")
    public BaseRespVo list(int page,int limit,String sort,String order) {


        PageData pageData = goodsService.query(page,limit,sort,order);
        return BaseRespVo.ok(pageData);
    }
    @RequestMapping("create")
    @LogRecord
    public BaseRespVo create(@RequestBody GoodsCreateVo goodsCreateVo ) throws Exception {
        boolean goods = goodsService.createGoods(goodsCreateVo);
        if (goods){
            //结果响应
            return BaseRespVo.ok("商品上架成功");
        }else {
            return BaseRespVo.fail("商品上架失败",605);
        }
    }


}
